package cn.achao.csr.api.model.entity;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Set;

import cn.achao.csr.base.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * (SysRole)实体类
 *
 * @author achao
 * @since 2025-01-23 17:15:00
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class SysRole extends BaseEntity implements Serializable {
    private static final long serialVersionUID = -95630941595068519L;

    /**
     * 主键
     */
    @TableId(type = IdType.ASSIGN_ID)
    private Long id = super.getId();
    /**
     * 角色名称
     */
    private String roleName;
    /**
     * 角色权限字符
     */
    private String roleKey;
    /**
     * 角色排序
     */
    private Integer roleSort;
    /**
     * 数据范围（1：全部数据权限 2：自定数据权限 3：本部门数据权限 4：本部门及以下数据权限）
     */
    private String dataScope;
    /**
     * 角色状态
     */
    private String status;
    /**
     * 创建者
     */
    private String createBy;
    /**
     * 更新者
     */
    private String updateBy;
    /**
     * 创建时间
     */
    private LocalDateTime createTime;
    /**
     * 更新时间
     */
    private LocalDateTime updateTime;
    /**
     * 是否删除
     */
    @TableLogic(value = "0", delval = "1")
    private Integer isDel;
    /**
     * 备注
     */
    private String remark;

    /** 部门组（数据权限） */
    @TableField(exist = false)
    private Long[] deptIds;

    /** 角色菜单权限 */
    @TableField(exist = false)
    private Set<String> permissions;

    /**
     * INSERT INTO `csr`.`leaf_alloc` (`biz_tag`, `max_id`, `step`, `description`)
     * VALUES ('seq_sys_role', 1, 100, 'SysRole主键');
     * @return
     */
    @Override
    public String sequenceCode() {
        return "seq_sys_role";
    }

    public SysRole(Boolean generateId) {
        super(generateId);
    }
}

